//
//  Countdown.m
//  倒计时按钮
//
//  Created by Adiljan on 2017/1/12.
//  Copyright © 2017年 Adiljan. All rights reserved.
//

#import "CountdownButton.h"

@implementation CountdownButton

- (instancetype)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    if (self) {
        [self initView];
    }
    return self;
}
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self initView];
    }
    return self;
}

- (void)initView{
    self.intTime = self.intTime==0?60:self.intTime;
    self.titleDefaultColor = self.titleDefaultColor==nil?[UIColor whiteColor]:self.titleDefaultColor;
    self.titleCountdownColor = self.titleCountdownColor==nil?[UIColor whiteColor]:self.titleCountdownColor;
    self.BgDefaultColor = self.BgDefaultColor==nil?[UIColor blueColor]:self.BgDefaultColor;
    self.BgCountdownColor = self.BgCountdownColor==nil?[UIColor colorWithRed:192.0/255.0f green:192.0/255.0f blue:192.0/255.0f alpha:1]:self.BgCountdownColor;
    self.BgCountdownDoneColor = self.BgCountdownDoneColor==nil?[UIColor colorWithRed:241.0/255.0f green:114.0/255.0f blue:0/255.0f alpha:1]:self.BgCountdownDoneColor;
    
    btnClick = [[UIButton alloc]initWithFrame:self.bounds];
    btnClick.layer.cornerRadius = 5;
    btnClick.layer.masksToBounds = YES;
    btnClick.backgroundColor = self.BgDefaultColor;
    [btnClick setTitle:@"验证码" forState:UIControlStateNormal];
    [btnClick setTitleColor:self.titleDefaultColor forState:UIControlStateNormal];
    [btnClick addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:btnClick];
    
}
- (void)btnClick:(id)sender{
    
    if (_ClickBlock) {
        _ClickBlock();
    }
}
- (void)getCode:(void (^)(void))isGo{
    __block NSInteger timeout=self.intTime; //倒计时时间
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
    dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
    dispatch_source_set_event_handler(_timer, ^{
        if(timeout<=0){ //倒计时结束，关闭
            
            dispatch_source_cancel(_timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                isGo();
                //设置界面的按钮显示 根据自己需求设置
                btnClick.backgroundColor = self.BgCountdownDoneColor;
                [btnClick setTitle:@"重新获取" forState:UIControlStateNormal];
                btnClick.userInteractionEnabled = YES;
            });
        }else{
            //            int minutes = timeout / 60;
            int seconds = timeout % 60;
            NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置界面的按钮显示 根据自己需求设置
                btnClick.backgroundColor = self.BgCountdownColor;
                [btnClick setTitle:[NSString stringWithFormat:@"%@s",strTime] forState:UIControlStateNormal];
                btnClick.userInteractionEnabled = NO;
                
            });
            timeout--;
            
        }
    });
    dispatch_resume(_timer);
}
//
//- (void)getCode:(NSString *)msg success:(void (^)(BOOL))success failure:(void (^)(BOOL))failure{
//    if (success) {
//        NSLog(@"Adiljan===>成功");
//    }else{
//        NSLog(@"Adiljan===>失败");
//    }
//}

@end
